package com.jdy.haoduoaiteacher.util;///**
// *
// */
//package com.jdy.haoduoaiteacher.util;
//
//import java.util.ArrayList;
//import java.util.List;
//
//import org.json.JSONException;
//import org.json.JSONObject;
//
//import android.content.Context;
//import android.content.DialogInterface;
//import android.content.DialogInterface.OnDismissListener;
//import android.content.Intent;
//import android.os.Handler;
//import android.util.Log;
//import android.view.WindowManager;
//
//import com.jdy.haoduoaiteacher.MyTeacherApp;
//import com.jdy.haoduoaiteacher.activity.LoginActivity;
//import com.jdy.haoduoaiteacher.enums.MediaType;
//import com.jdy.haoduoaiteacher.enums.PlayState;
//import com.jdy.haoduoaiteacher.intface.IMParseListener;
//import com.jdy.haoduoaiteacher.model.LeUser;
//import com.jdy.haoduoaiteacher.model.SocketMachineInfo;
//import com.jdy.haoduoaiteacher.parse.JsonSerializer;
//import com.jdy.haoduoaiteacher.widget.CustomOneBtnDialog;
//import com.jdy.haoduoaiteacher.widget.OfflineNotificationDialog;
//import com.tencent.TIMCallBack;
//import com.tencent.TIMConnListener;
//import com.tencent.TIMConversation;
//import com.tencent.TIMConversationType;
//import com.tencent.TIMElem;
//import com.tencent.TIMElemType;
//import com.tencent.TIMManager;
//import com.tencent.TIMMessage;
//import com.tencent.TIMMessageListener;
//import com.tencent.TIMTextElem;
//import com.tencent.TIMUser;
//import com.tencent.TIMUserStatusListener;
//import com.tencent.TIMValueCallBack;
//
///**
// * @author zp 2016-9-6 ����3:45:37
// */
//public class ImHelper {
//
//  private static final String TAG = ImHelper.class.getSimpleName();
//
//  private int mAccountType;
//
//  private int mSdkAppId;
//
//  private String mIdentifier;
//
//  private String mUserSig;
//
//  private TIMConversation mSendConversation;
//
//  private List<OnDataReceivedListener> mOnDataReceivedListener;
//
//  private List<IMParseListener> mIMParseListener;
//  public OnIMCallbackListener mOnIMCallbackListener;
//
//  public void init(Context context, int acType, int sdkAppId, String id,
//      String userSig) {
//
//    TIMManager.getInstance().init(context);
//
//    this.mAccountType = acType;
//
//    this.mSdkAppId = sdkAppId;
//
//    this.mIdentifier = id;
//
//    this.mUserSig = userSig;
//
//    mOnDataReceivedListener = new ArrayList<OnDataReceivedListener>();
//    mIMParseListener = new ArrayList<IMParseListener>();
//
//
//    //设置用户状态变更监听器，在回调中进行相应的处理
//    TIMManager.getInstance().setUserStatusListener(new TIMUserStatusListener() {
//      @Override
//      public void onForceOffline() {
//        Intent logoutIntent = new Intent(
//                "com.jdy.haoduoaiteacher.activity.logout");
//        MyTeacherApp.getAppContext().sendBroadcast(
//                logoutIntent);
//
//        LeConfig.isLogin = false;
////        LeConfig.isDeviceActivated = false;
////        LeConfig.isDeviceBinded = false;
////        LeConfig.isInfoFilled = false;
//        LeConfig.isDeviceConnect = false;
//
//        CustomOneBtnDialog.Builder cdb = new CustomOneBtnDialog.Builder(
//                MyTeacherApp.getAppContext())
//                .setTitle("下线通知")
//                .setMessage("您的帐号已经在其它手机登录！如非本人操作，则密码可能已经泄露，建议修改密码后再重新登录。")
//                .setPositiveButton("确定",
//                        new DialogInterface.OnClickListener() {
//
//                          @Override
//                          public void onClick(DialogInterface dialog,
//                                              int which) {
//                            dialog.dismiss();
//                          }
//                        });
//        final CustomOneBtnDialog cd = cdb.create();
//        cd.getWindow().setType(
//                WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
//        cd.setOnDismissListener(new OnDismissListener() {
//
//          @Override
//          public void onDismiss(DialogInterface dialog) {
//            Intent toActivityIntent = new Intent(MyTeacherApp
//                    .getAppContext(), LoginActivity.class);
//            toActivityIntent
//                    .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK
//                            | Intent.FLAG_ACTIVITY_CLEAR_TOP
//                            | Intent.FLAG_ACTIVITY_NEW_TASK);
//            MyTeacherApp.getAppContext().startActivity(
//                    toActivityIntent);
//            // finish();
//            // dialog.dismiss();
//          }
//        });
//        // cd.setCancelable(false);
//        // cd.setCanceledOnTouchOutside(false);
//        cd.show();
//      }
//
//      @Override
//      public void onUserSigExpired() {
//        //票据过期，需要换票后重新登录
//      }
//    });
//  }
//
//  public interface OnIMCallbackListener {
//    public void onIMLoginSuccess();
//
//    public void onIMLoginError(int code, String desc);
//
//    public void onIMSendSuccess();
//
//    public void onIMSendError(int code, String desc);
//
//  }
//
//  String curMac;
//
//  public void login() {
//    TIMUser user = new TIMUser();
//
//    user.setAccountType(String.valueOf(mAccountType));
//
//    user.setAppIdAt3rd(String.valueOf(mSdkAppId));
//
//    user.setIdentifier(mIdentifier);
//
//    TIMManager.getInstance().login(mSdkAppId, user, mUserSig,
//        new TIMCallBack() {
//          @Override
//          public void onSuccess() {
//            Log.e("IMMMM", "00000000000");
//            if (mOnIMCallbackListener != null) {
//              mOnIMCallbackListener.onIMLoginSuccess();
//            }
//
//            if (MyTeacherApp.getInstance().getUser() != null
//                && MyTeacherApp.getInstance().getUser().machine != null) {
//              curMac = MyTeacherApp.getInstance().getUser().machine.id;
//            }
//
//            if (Tools.isEmpty(curMac)
//                && MyTeacherApp.getInstance().getBaby() != null) {
//              curMac = MyTeacherApp.getInstance().getBaby().id;
//            }
//          }
//
//          @Override
//          public void onError(int code, String desc) {
//            Log.e("IMMMM", code + desc);
//            if (mOnIMCallbackListener != null) {
//              mOnIMCallbackListener.onIMLoginError(code, desc);
//            }
//          }
//        });
//  }
//
//  public void removeDataReceivedListener(OnDataReceivedListener li) {
//    this.mOnDataReceivedListener.remove(li);
//  }
//
//  public void setDataReceivedListener(OnDataReceivedListener li) {
//    if (!mOnDataReceivedListener.contains(li)) {
//      this.mOnDataReceivedListener.add(li);
//    }
//  }
//
//  public void removeIMParseListener(IMParseListener li) {
//    this.mIMParseListener.remove(li);
//  }
//
//  public void setIMParseListener(IMParseListener li) {
//    if (!mIMParseListener.contains(li)) {
//      this.mIMParseListener.add(li);
//    }
//  }
//
//  boolean mDeviceHasUpgraded = false;
//
//  private void parseMachineInfo(JSONObject jsonObject) {
//    if (jsonObject.has("update")) {
//
//      final SocketMachineInfo sMInfo = JsonSerializer.getInstance()
//          .deserialize(jsonObject.toString(), SocketMachineInfo.class);
//
//      if (sMInfo != null) {
//        if (mIMParseListener != null) {
//          if (!mDeviceHasUpgraded) {
//            if (mIMParseListener != null) {
//              for (IMParseListener dsl : mIMParseListener) {
//                dsl.onUpgrade(sMInfo.update);
//              }
//              mDeviceHasUpgraded = true;
//            }
//
//          }
//
//          if (mIMParseListener != null) {
//            for (IMParseListener dsl : mIMParseListener) {
//              dsl.onPowerChanged(sMInfo.power);
//            }
//          }
//        }
//
//        Intent macInfoChangedIntent = new Intent("device.details.update.event");
//        macInfoChangedIntent.putExtra("socketmachineinfo", sMInfo);
//        MyTeacherApp.getAppContext().sendBroadcast(macInfoChangedIntent);
//      }
//    }
//  }
//
//  public void setOnDataReceivedListener(final OnDataReceivedListener listener) {
//
//    setDataReceivedListener(listener);
//
//    if (MyTeacherApp.getInstance().getBaby() != null) {
//      curMac = MyTeacherApp.getInstance().getBaby().id;
//    }
//
//    TIMManager.getInstance().setConnectionListener(new TIMConnListener() {
//
//      @Override
//      public void onWifiNeedAuth(String arg0) {
//        // TODO Auto-generated method stub
//
//      }
//
//      @Override
//      public void onDisconnected(int arg0, String arg1) {
//        LeConfig.isDeviceConnect = false;
//
//        if (mIMParseListener != null) {
//          for (IMParseListener dsl : mIMParseListener) {
//            dsl.onNetWorkDisconn();
//          }
//        }
//      }
//
//      @Override
//      public void onConnected() {
//        // TODO Auto-generated method stub
//
//      }
//    });
//
//
//
//
//    TIMManager.getInstance().addMessageListener(new TIMMessageListener() {
//
//      @Override
//      public boolean onNewMessages(List<TIMMessage> arg0) {
//
//        if (MyTeacherApp.getInstance().getBaby() != null) {
//          curMac = MyTeacherApp.getInstance().getBaby().id;
//        }
//
//        int j = 0;
//        for (; j < arg0.size(); j++) {
//          TIMMessage msg = arg0.get(j);
//          for (int i = 0; i < msg.getElementCount(); ++i) {
//            TIMElem elem = msg.getElement(i);
//            TIMElemType elemType = elem.getType();
//
//            if (elemType == TIMElemType.Text
//                && (Tools.isEmpty(curMac) || Tools.isNotEmpty(curMac)
//                    && msg.getSender().contains(curMac))) {
//              TIMTextElem realElem = (TIMTextElem) elem;
//              String result = realElem.getText();
//
//              Log.e("superman@@", result);
//
//              mHandler.removeCallbacksAndMessages(null);
//
//              JSONObject jsonData;
//              try {
//                jsonData = new JSONObject(result.toString());
//                if (Tools.isNotEmpty(jsonData) && !jsonData.isNull("code")
//                    && jsonData.getString("code").contains("server")) {
//                  String loginStr = jsonData.getString("act");
//                  if (Tools.isNotEmpty(loginStr)
//                      && loginStr.contains("Device_Login")) {
//                    JSONObject jsonObject = new JSONObject();
//                    LeUser lu = MyTeacherApp.getInstance().getUser();
//                    if (lu != null) {
//                      try {
//                        jsonObject.put("code", "app");
//                        jsonObject.put("act", "connect");
//                        jsonObject.put("data", lu.id);
//                        send(jsonObject.toString());
//                      } catch (JSONException e) {
//                        e.printStackTrace();
//                      }
//                    }
//                  } else if (loginStr.contains("Device_Logout")) {
//                    LeConfig.isDeviceConnect = false;
//                  } else if (loginStr
//                      .contains("Device_APP_Connection_Switched")) {
//                    LeConfig.isDeviceConnect = false;
//                  }
//                } else if (Tools.isNotEmpty(jsonData)
//                    && !jsonData.isNull("code")
//                    && jsonData.getString("code").contains("device")
//                    && !jsonData.isNull("act")) {
//                  String actionType = jsonData.getString("act");
//                  if (Tools.isNotEmpty(actionType)) {
//                    JSONObject realData;
//                    if (actionType.contains("videostatu")) { // 播放狀態
//                      if (!jsonData.isNull("data")) {
//                        realData = jsonData.getJSONObject("data");
//                        parseDeviceActionResponse(realData);
//                      }
//                    } else if (actionType.contains("heart")) {
//                      LeConfig.isDeviceConnect = true;
////                      mHandler.removeCallbacksAndMessages(null);
////                      mHandler.postDelayed(new Runnable() {
////                        @Override
////                        public void run() {
////                          LeConfig.isDeviceConnect = false;
////                          popOfflineNotification();
////                        }
////                      }, 17 * 1000);
//                    } else if (actionType
//                        .contains("Device_APP_Connection_Switched")) {
//                      Intent logoutIntent = new Intent(
//                          "com.jdy.haoduoaiteacher.activity.logout");
//                      MyTeacherApp.getAppContext().sendBroadcast(
//                          logoutIntent);
//
//                      LeConfig.isLogin = false;
////                      LeConfig.isDeviceActivated = false;
////                      LeConfig.isDeviceBinded = false;
////                      LeConfig.isInfoFilled = false;
//                      LeConfig.isDeviceConnect = false;
//
//                      CustomOneBtnDialog.Builder cdb = new CustomOneBtnDialog.Builder(
//                          MyTeacherApp.getAppContext())
//                          .setTitle("下线通知")
//                          .setMessage("您有其他亲友正在连接控制小小班设备，请休息片刻。")
//                          .setPositiveButton("确定",
//                              new DialogInterface.OnClickListener() {
//
//                                @Override
//                                public void onClick(DialogInterface dialog,
//                                    int which) {
//                                  dialog.dismiss();
//                                }
//                              });
//                      final CustomOneBtnDialog cd = cdb.create();
//                      cd.getWindow().setType(
//                          WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
//                      cd.setOnDismissListener(new OnDismissListener() {
//
//                        @Override
//                        public void onDismiss(DialogInterface dialog) {
//                          Intent toActivityIntent = new Intent(MyTeacherApp
//                              .getAppContext(), LoginActivity.class);
//                          toActivityIntent
//                              .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK
//                                  | Intent.FLAG_ACTIVITY_CLEAR_TOP
//                                  | Intent.FLAG_ACTIVITY_NEW_TASK);
//                          MyTeacherApp.getAppContext().startActivity(
//                              toActivityIntent);
//                          // finish();
//                          // dialog.dismiss();
//                        }
//                      });
//                      // cd.setCancelable(false);
//                      // cd.setCanceledOnTouchOutside(false);
//                      cd.show();
//                    }
//                  }
//                }
//              } catch (JSONException e1) {
//                e1.printStackTrace();
//              }
//
//              for (OnDataReceivedListener li : mOnDataReceivedListener) {
//                if (li != null) {
//                  li.onDataReceived(result);
//                }
//              }
//
//              // listener.onDataReceived(result);
//            } else if (elemType == TIMElemType.Image) {
//              // TODO
//            }
//          }
//        }
//        return true;
//      }
//    });
//  }
//
// // private static OfflineNotificationDialog mOfflineNotificationDialog;
//
////  private void popOfflineNotification() {
////
////    if (mOfflineNotificationDialog != null  && mOfflineNotificationDialog.isShowing()) {
////      return;
////    }
////
////    OfflineNotificationDialog.Builder cdb = new OfflineNotificationDialog.Builder(
////            MyTeacherApp.getAppContext()).setTitle("").setMessage("")
////            .setPositiveButton("知道了", new DialogInterface.OnClickListener() {
////              @Override
////              public void onClick(DialogInterface dialog, int which) {
////                dialog.dismiss();
////              }
////            });
////
////    mOfflineNotificationDialog = cdb.create();
////
////    mOfflineNotificationDialog.getWindow().setType(
////            WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
////
//////    cd.setCancelable(false);
//////    cd.setCanceledOnTouchOutside(false);
////
////    if(!mOfflineNotificationDialog.isShowing())
////      mOfflineNotificationDialog.show();
////
////  }
//
//  private Handler mHandler = new Handler();
//
//  private void parseDeviceActionResponse(JSONObject jsonObject) {
//    if (jsonObject.has("type")) {
//      try {
//        String actionType = jsonObject.getString("type");
//        if ("cartoon".equals(actionType) || "story".equals(actionType)
//            || "radio".equals(actionType) || "dub".equals(actionType)
//            || "mine_story".equals(actionType) || "book".equals(actionType)
//            || "education".equals(actionType)) {
//          Log.e(TAG, "video data info from device===>" + jsonObject.toString());
//          parseCartoonInfo(jsonObject);
//        } else if ("machineinfo".equals(actionType)) {
//          Log.e(TAG,
//              "machineinfo data info from device===>" + jsonObject.toString());
//          parseMachineInfo(jsonObject);
//        } else if ("radio".equals(actionType)) {
//          Log.e(TAG, "radio data info from device===>" + jsonObject.toString());
//          parseRadioInfo(jsonObject);
//        } else if ("pre".equals(actionType)) {
//          if (mIMParseListener != null) {
//            for (IMParseListener dsl : mIMParseListener) {
//              dsl.onPlayPrevFailed();
//            }
//          }
//        } else if ("next".equals(actionType)) {
//          if (mIMParseListener != null) {
//            for (IMParseListener dsl : mIMParseListener) {
//              dsl.onPlayNextFailed();
//            }
//          }
//        } else if ("downloadstate".equals(actionType)) { // 下载进度
//          // parseDownloadStateInfo(jsonObject);
//        } else if ("getdownloadlist".equals(actionType)) {
//          // parseDownloadListInfo(jsonObject);
//        } else if ("downloadsize".equals(actionType)) {
//          if (jsonObject.has("size")) {
//            // if (SocketThreadManager.getInstance().getDownloadStateListener()
//            // != null) {
//            // for (DownloadStateListener dsl : SocketThreadManager
//            // .getInstance().getDownloadStateListener()) {
//            // dsl.downLoadSize(jsonObject.getInt("size"));
//            // }
//            // }
//          }
//        } else {
//          Log.e(TAG, "other data info from device===>" + jsonObject.toString());
//          parseOtherInfo(jsonObject);
//        }
//      } catch (JSONException e) {
//        e.printStackTrace();
//      }
//    } else {// when there is no type in the content!
//      parseNoTypeInfo(jsonObject);
//    }
//  }
//
//  private void parseOtherInfo(JSONObject jsonObject) {
//    String playState;
//    try {
//      playState = jsonObject.getString("PlayState");
//      PlayState state = getPlayStateByString(playState);
//      if (mIMParseListener != null) {
//        for (IMParseListener dsl : mIMParseListener) {
//          dsl.onPlayMedia(state, MediaType.OtherType, jsonObject);
//        }
//      }
//    } catch (JSONException e) {
//
//      e.printStackTrace();
//    }
//  }
//
//  private PlayState getPlayStateByString(String state) {
//    if ("playing".equals(state)) {
//      return PlayState.Playing;
//    } else if ("pause".equals(state)) {
//      return PlayState.Pause;
//    } else if ("stop".equals(state)) {
//      return PlayState.Stop;
//    }
//    return PlayState.None;
//  }
//
//  private void parseRadioInfo(JSONObject jsonObject) {
//    String playState;
//    try {
//      playState = jsonObject.getString("PlayState");
//      PlayState state = getPlayStateByString(playState);
//      if (mIMParseListener != null) {
//        for (IMParseListener dsl : mIMParseListener) {
//          dsl.onPlayMedia(state, MediaType.Radio, jsonObject);
//        }
//      }
//    } catch (JSONException e) {
//      e.printStackTrace();
//    }
//  }
//
//  private void parseCartoonInfo(JSONObject jsonObject) {
//    try {
//      // if (jsonObject.has("VideoId")) {
//      // int id = jsonObject.getInt("VideoId");
//      // if (id == -1)
//  // return;
//  // }
//
//  PlayState state = PlayState.None;
//      if (jsonObject.has("PlayState")) {
//    String playState = jsonObject.getString("PlayState");
//    state = getPlayStateByString(playState);
//  }
//
//      if (mIMParseListener != null) {
//    for (IMParseListener dsl : mIMParseListener) {
//      dsl.onPlayMedia(state, MediaType.Collection, jsonObject);
//    }
//  }
//} catch (JSONException e) {
//        e.printStackTrace();
//        }
//        }
//
//  private void parseNoTypeInfo(JSONObject jsonObject) {
//    try {
//      String playState;
//      playState = jsonObject.getString("PlayState");
//      PlayState state = getPlayStateByString(playState);
//      if (mIMParseListener != null) {
//        for (IMParseListener dsl : mIMParseListener) {
//          dsl.onPlayMedia(state, MediaType.NoType, jsonObject);
//        }
//      }
//    } catch (JSONException e) {
//      // TODO Auto-generated catch block
//      e.printStackTrace();
//    }
//  }
//
//  public void logout() {
//    TIMManager.getInstance().logout(new TIMCallBack() {
//      @Override
//      public void onError(int code, String desc) {
//
//        Log.d(TAG, "logout failed. code: " + code + " errmsg: " + desc);
//      }
//
//      @Override
//      public void onSuccess() {
//
//      }
//    });
//
//    if (mHandler != null) {
//      mHandler.removeCallbacksAndMessages(null);
//    }
//  }
//
//  /**
//   * Before send you should call connect
//   *
//   *
//   *  JSONObject dataJson = new JSONObject();
//   dataJson.put("code", "app");
//   dataJson.put("act", "machineinfo");
//   mImHelper.send(dataJson.toString());
//   *
//   *
//   * @param msgContent
//   */
//  public void send(final String msgContent) {
//    TIMMessage msg = new TIMMessage();
//
//    TIMTextElem elem = new TIMTextElem();
//    elem.setText(msgContent);
//
//    if (msg.addElement(elem) != 0 || mSendConversation == null) {
//      Log.d(TAG, "addElement failed");
//      return;
//    }
//
//    mSendConversation.sendOnlineMessage(msg,
//        new TIMValueCallBack<TIMMessage>() {
//          @Override
//          public void onError(int code, String desc) {
//
//            if (mOnIMCallbackListener != null) {
//              mOnIMCallbackListener.onIMSendError(code, desc);
//            }
//            Log.d(TAG, "send message failed. code: " + code + " errmsg: "
//                + desc);
//          }
//
//          @Override
//          public void onSuccess(TIMMessage msg) {
//            if (mOnIMCallbackListener != null) {
//              mOnIMCallbackListener.onIMSendSuccess();
//            }
//
//            Log.e(TAG, "SendMsg ok");
//          }
//        });
//
//
// //   Log.e("ddddddddddddddd","111111111====" +  msgContent.toString());
//
////    mHandler.removeCallbacksAndMessages(null);
////    mHandler.postDelayed(new Runnable() {
////      @Override
////      public void run() {
////        LeConfig.isDeviceConnect = false;
////      //  Log.e("ddddddddddddddd", "22222222====" +  msgContent.toString());
////        popOfflineNotification();
////      }
////    }, 10*1000);
//  }
//
//  /**
//   * First connect then send.
//   *
//   * @param target
//   */
//  public void connect(String target) {
//    mSendConversation = TIMManager.getInstance().getConversation(
//        TIMConversationType.C2C, target);
//  }
//
//  public boolean isTargetOnline(String macId) {
//    return false;
//  }
//
//  public boolean isLogin() {
//    if (Tools.isNotEmpty(mIdentifier)
//        && Tools.isNotEmpty(TIMManager.getInstance().getLoginUser())
//        && TIMManager.getInstance().getLoginUser().equals(mIdentifier)) {
//      return true;
//    } else
//      return false;
//  }
//
//}
